'''元组 不可变的有序的序列
 和列表一样可以存储多个元素
（安全、访问速度更快）
'''

"""
什么时候用元组

"""


a=(10,20,30)
print(type(a))

b=10,20,30
print(type(b))

c=(10)
print(type(c))

d=(10,)
print(type(d))

#使用tuple函数创建元组 常用于初始化或默认值
aa=tuple()
print(aa)

#从字符中创建 将每一个字符(空格、标点符号也算)变成一个元素
str='abc'
print(str)
str1=tuple('ab，c')
print(str1)

#range() 生成数字的序列
str2=tuple(range(5))
print(str2)
str3=tuple(range(2,6))
print(str3)
str4=tuple(range(0,6,2))
print(str4)

#从列表创建 把列表冻结成元组 让他不能被修改
list1=[1,2,3]
print(list1)
list2=tuple([1,2,3])
#list1[0]=100   修改会报错
print(list2)

#元组的元素访问以及切片
#接收索引以及切片的操作 但是不能修改
bb=(1,2,3,4,5,6)
print(bb[1])
print(bb[1:3])
print(bb[:4])
print(bb[::4])

#常用的操作
#拼接与重复
cc=(1,2)
dd=(3,4)
ee=cc+dd
print(ee)

ff=cc*3
print(ff)

#判断
aaa=(10,20,30)
print(20 in aaa)
print(10 not in aaa)

#比较运算 逐一比较
t1=(1,2,3)
t2=(1,2,4)
print(t1<t2)

#统计查询  max min sum 所有元素必须类型相同且可以互相比较
bbb=(1,2,3,4,5,6,1,1)
print(len(bbb))
print(max(bbb))
print(min(bbb))
print(sum(bbb))

#查找元素第一次出现的下标
print(bbb.index(3))

#统计某个元素出现的次数
print(bbb.count(1))

#元组的排序 返回的是一个列表
ccc=(2,3,1,9,5)
ddd=sorted(ccc)
print(type(ddd))
print(ddd)
eee=tuple(sorted(ccc))
print(type(eee))
print(eee)

#zip对象与元组
names=["Alice","Bob","Charlie"]
ages=[10,20,30]
scores=[100,90,80]

zipped=zip(names,ages,scores)
print(list(zipped))







